package com.cskaoyan.javase.oop1._4compare;

import javax.xml.transform.Source;

/**
 * 比较成员变量和局部变量
 * 局部变量和成员变量的比较，我们从以下五个方面去比较：
 *      1.在类中定义的位置不同
 *              成员变量: 定义在成员变量,类体中,局部位置以外的位置.
 *              局部变量: 定义在局部位置的变量,方法体,方法的形参,代码块等局部位置
 *      2.在内存中的位置不同
 *              成员变量: 堆上的对象当中.
 *              局部变量: 方法的栈帧中.
 *      3.生命周期不同
 *              成员变量: 和对象同生共死.
 *              局部变量: 和方法调用同生共死
 *      4.有无默认初始化不同
 *              成员变量: 具有默认初始化,具有默认值
 *                  即便没有手动初始化,手动赋值
 *                  也有默认值
 *              局部变量: 没有默认初始化,没有默认值,必须手动进行初始化,才能够使用
 *      5.作用范围
 *              成员变量: 成员变量在整个类中都可以被访问,但是不同的方法访问方式不同.
 *                  成员变量作用范围是整个类中.
 *                  成员方法: 类中的成员方法可以无条件,直接访问成员变量
 *                  static方法: 是不能直接访问成员变量的,但是可以间接的创建自身类的对象,然后访问
 *
 *              局部变量: 仅在作用域内部生效.可能是一个方法,也可能就是一个代码块.
 *
 * @since 17:05
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
}
class Student{
    int age;

    // 成员方法
    public void test(){
        System.out.println(age);
    }

    // static成员方法
    public static void testStatic(){
        // System.out.println(age);
        Student s = new Student();
        System.out.println(s.age);
    }

}
